Instrucțiunea GROUP BY grupează rândurile cu aceleași valori în rânduri rezumative, cum ar fi „găsiți numărul de clienți din fiecare țară”.
Instrucțiunea GROUP BY este adesea folosită cu funcții agregate (COUNT(), MAX(), MIN(), SUM(), AVG()) pentru a grupa un set de rezultate pe una sau mai multe coloane.
SELECT column_name(s)
FROM table_name
WHERE condition
GROUP BY column_name(s)
ORDER BY column_name(s)
Următorul este un exemplu din tabelul „Customers” („Clienți”) din baza de date „Northwind”:
CustomerID | CustomerName | ContactName | Address | City | PostalCode | Country |
---|---|---|---|---|---|---|
1 | Alfreds Futterkiste | Maria Anders | Obere Str. 57 | Berlin | 12209 | Germany |
2 | Ana Trujillo Emparedados y helados | Ana Trujillo | Avda. de la Constitución 2222 | México D.F. | 5021 | Mexico |
3 | Antonio Moreno Taquería | Antonio Moreno | Mataderos 2312 | México D.F. | 5023 | Mexico |
4 | Around the Horn | Thomas Hardy | 120 Hanover Sq. | London | WA1 1DP | UK |
5 | Berglunds snabbköp | Christina Berglund | Berguvsvägen 8 | Luleå | S-958 22 | Sweden |
Următoarea instrucțiune SQL listează numărul de clienți din fiecare țară:
Run SQLSELECT COUNT(CustomerID), Country
FROM Customers
GROUP BY Country
Următoarea instrucțiune SQL listează clienții din fiecare țară, sortați de la cel mai mare la cel mai mic:
Run SQLSELECT COUNT(CustomerID), Country
FROM Customers
GROUP BY Country
ORDER BY COUNT(CustomerID) DESC
Următorul este un exemplu din tabelul „Orders” („Comenzi”) din baza de date „Northwind”:
ProductID | OrderID | CustomerID | EmployeeID | OrderDate | ShipperID |
---|---|---|---|---|---|
1 | 10248 | 90 | 5 | 1996-07-04 | 3 |
2 | 10249 | 81 | 6 | 1996-07-05 | 1 |
3 | 10250 | 34 | 4 | 1996-07-08 | 2 |
4 | 10251 | 84 | 3 | 1996-07-08 | 1 |
5 | 10252 | 76 | 4 | 1996-07-09 | 2 |
Și eșantionul din tabelul „Shippers” („Expeditori”):
ShipperID | ShipperName | Phone |
---|---|---|
1 | Speedy Express | (503) 555-9831 |
2 | United Package | (503) 555-3199 |
3 | Federal Shipping | (503) 555-9931 |
Următoarea instrucțiune SQL listează numărul de comenzi trimise de fiecare expeditor:
Run SQLSELECT Shippers.ShipperName, COUNT(Orders.OrderID) AS NumberOfOrders
FROM Orders
LEFT JOIN Shippers
ON Orders.ShipperID = Shippers.ShipperID
GROUP BY ShipperName